home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 October / pcx14_9710.iso / swag / files.swg / 0106_WILDCHCK Unit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-30  |  1.3 KB  |  50 lines

  1.  
  2. Unit WildChck;
  3. {$O+}
  4.  
  5. Interface
  6. Function MatchWC(WC,S : String):Boolean;
  7. Implementation
  8.  
  9. Type BooleanRA = Array[Boolean] Of String[5];
  10. Const TorF_Str : BooleanRA = ('False','True ');
  11.  
  12. Procedure Upper(Var S : String);
  13.   Var i : Byte;
  14.   Begin
  15.     For i := 1 To Length(S) Do S[i] := UpCase(S[i]);
  16.   End;
  17.  
  18. Function MatchWC(WC,S : String):Boolean;
  19.   Var
  20.     WCLen : Byte ABSOLUTE WC;
  21.     SLen  : Byte ABSOLUTE S;
  22.     is,iw : Byte;
  23.     Match : Boolean;
  24.   Begin
  25.     Match := True; is := 1; iw := 1;Upper(WC);Upper(S);
  26.     While (iw <= WCLen) AND (is <= SLen) AND (Match) Do Begin
  27.       Case WC[iw] Of
  28.         '?' : Begin Inc(is); Inc(iw);
  29.               End; {'?'}
  30.         '*' : Begin
  31.                 While ((WC[iw] = '?') OR (WC[iw] = '*')) AND
  32.                       (iw <= WCLen) Do Inc(iw);
  33.                 If iw <= WCLen Then Begin
  34.                   While (WC[iw] <> S[is]) AND (is <= SLen) Do
  35.                     Inc(is);
  36.                   If (is <= Slen) AND (WC[iw] = S[is]) Then Begin
  37.                     Inc(is); Inc(iw); End
  38.                   Else Match := False;
  39.                 End;
  40.               End; {'*'}
  41.         Else  {Else for Case}
  42.           If WC[iw] = S[is] Then Begin
  43.             Inc(iw); Inc(is); End
  44.           Else Match := False;
  45.       End;  {Case}
  46.     End;  {While}
  47.     MatchWC := Match;
  48.   End;
  49. end.
  50.